Skip to main content

Programarea FPGA-ului în Vivado

Pentru acest tutorial vom presupune că ați parcurs deja tutorialele: Creare proiect Vivado și Simulare Vivado fără nicio eroare în timpul simulării la tabul Messages (ignorați warning-urile momentan). Messages

Pentru a programa FPGA-ul în Vivado trebuie să adăugăm un Constraint File:

  1. Click fie la Add Sources Add Sources Fie click dreapta în fereastra Sources Sources Sau folosim Alt+A.
  2. Selectăm Add or create constraints, apoi Next. Add or create constraints
  3. Click pe "Create File", alegem un nume, de exemplu "nexys_a7", Ok, apoi Finish. exemplu "nexys_a7"
  4. Ar trebui să vedem acum un fișier gol cu numele nexys_a7.xdc la Sources. exemplu1.
  5. Vom scrie în acest fișier gol tot conținutul acestui fișier de pe GitHub: Nexys-A7-100T-Master.xdc. Cu ajutorul acestuia vom lega fiecare port al top modulului nostru (task01.v) la locații fizice de pe FPGA. Având la dispoziție următorul modul Verilog:
module task01(
input in,
output out
);

assign out = in;

endmodule
  1. Ne propunem să legăm intrarea in la push-button-ul N17 (cel din centru), iar ieșirea out la ledul H17 (cel mai din dreapta). Pentru acest lucru vom analiza fișierul Nexys-A7-100T-Master.xdc: toate liniile sunt comentate. Există grupuri de linii comentate pentru semnalul de ceas, switches, LEDs, RGB LEDs, push-buttons, 7 segments, CPU Reset Button, Buttons etc. Ne vom concentra acum doar pe LEDs și Buttons. Vom decomenta linia 30:
set_property -dict { PACKAGE_PIN H17   IOSTANDARD LVCMOS33 } [get_ports { LED[0] }]; #IO_L18P_T2_A24_15 Sch=led[0]

și linia 77:

set_property -dict { PACKAGE_PIN N17   IOSTANDARD LVCMOS33 } [get_ports { BTNC }]; #IO_L9P_T1_DQS_14 Sch=btnc

apoi vom schimba parametrul primit de "get_ports" din LED[0] în out și din BTNC în in. Cele două linii vor deveni astfel:

set_property -dict { PACKAGE_PIN H17   IOSTANDARD LVCMOS33 } [get_ports { out }]; #IO_L18P_T2_A24_15 Sch=led[0]

respectiv,

set_property -dict { PACKAGE_PIN N17   IOSTANDARD LVCMOS33 } [get_ports { in }]; #IO_L9P_T1_DQS_14 Sch=btnc

Putem lăsa celelalte linii comentate așa cum sunt le vom folosi în viitor pentru alte module. Salvați fișierul .xdc.

  1. În fereastra Flow Manager, în partea de jos apăsați pe Generate bitstream Generate bitstream
  2. În colțul din dreapta sus putem verifica progresul. exemplu2

exemplu3

În final ar trebui să vedem write_bitstream Complete

write_bitstream Complete

  1. Fișierul .bit a fost scris cu succes, dar se află încă în memoria calculatorului, acesta trebuie transferat pe FPGA.
  2. Conectați plăcuța la computer prin cablul USB-microUSB din cutie, porniți plăcuța folosind switch-ul lângă care scrie POWER.
  3. Apăsați "Open Target" și apoi "Auto Connect" exemplu4
  4. Procesul de auto conectare nu ar trebui să dureze mult auto conectare
  5. Ar trebui să vedem opțiunea Program device sub Hardware Manager. Program device
  6. Apoi să apăsăm Program dacă avem deja locația fișierului .bit la Bitstream file. Program
  7. În final ar trebui să avem un mesaj în consolă și ledul "Done" aprins pe plăcuță. Consolă
  8. Dacă toți pașii au fost parcurși în mod corespunzător, ledul H17 ar trebui să se aprindă cât timp butonul N17 este apăsat.

Dacă aveți sugestii de îmbunătățire a acestei pagini vă rog să trimiteți sugestiile pe mail la dosarudaniel@gmail.com. Sugestiile bune vor fi recompensate cu puncte bonus.